#pragma once
#include <string>
#include <vector>

#ifdef WEBAGGREGATORDLL_EXPORT
# define WEBAGGREGATORDLL_API __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define WEBAGGREGATORDLL_API __declspec (dllimport)
#endif /* Not BUILDING_DLL */

namespace WebAggregator
{
	namespace dataGrabber
	{
		class IObject
		{
			std::string attr;
			std::string val;
		public:
			WEBAGGREGATORDLL_API std::string id();
			WEBAGGREGATORDLL_API std::string displayName();
			WEBAGGREGATORDLL_API bool hasAttribute(std::string name);
			WEBAGGREGATORDLL_API std::string getAttribute(std::string name, std::string defaultValue);
			WEBAGGREGATORDLL_API std::vector<std::string>* getAttributes();
			WEBAGGREGATORDLL_API std::string toString();
			WEBAGGREGATORDLL_API std::string value();

			// having to implement a setter is optional
			WEBAGGREGATORDLL_API void setAttribute(std::string name, std::string value);
		};
	}
}